Bộ nhớ ảo phân trang Bộ nhớ ảo

Bảng trang

"Bảng trang" được dùng để biên dịch địa chỉ ảo, là địa chỉ mà những ứng dụng thấy được, sang địa chỉ thực, địa chỉ mà phần cứng sử dụng để thực thi lệnh; thiết bị phần cứng điều khiển quá trình biên dịch đặc biệt này được gọi là “đơn vị quản lý vùng nhớ” (Memory Management Unit - MMU). Mỗi cổng vào của "trang bảng" có một “lá cờ” cho biết “trang” đang được xét có nằm trong vùng nhớ thật (không ảo) hay không. Nếu đang nằm trong vùng nhớ thật, cổng vào của "trang bảng" sẽ chứa địa chỉ của vùng nhớ thật đó nơi mà trang đó được lưu. Khi mối quan hệ giữa một “trang” và thiết bị phần cứng được tạo nên, nếu cổng vào tương ứng trên "trang bảng" biểu thị rằng “trang” đó không nằm trong một vùng nhớ thật, thiết bị phần cứng sẽ gây ra một hiện tượng gọi là “loại bỏ trang lỗi”, tạo nên thành phần “giám sát trang” của hệ điều hành.

Hệ thống có thể có một "trang bảng" cho cả hệ thống, hoặc nhiều "trang bảng" riêng biệt cho mỗi ứng dụng và phân vùng, hoặc một cây "trang bảng" cho những phân vùng lớn hơn hoặc là những sự kết hợp giữa những loại trên. Trong trường hợp chỉ có một "trang bảng", nhiều chương trình cùng chạy đồng thời sẽ sử dụng những phần khác nhau trong độ dài của địa chỉ ảo. Nếu có nhiều "trang bảng" hoặc trang vùng, sẽ tồn tại nhiều địa chỉ ảo và nhiều chương trình chạy đồng thời với những "trang bảng" chuyển hướng tới những địa chỉ thật khác nhau.

Giám sát trang

Đây là thành phần của hệ điều hành tạo ra và quản lý những "trang bảng". Nếu hiện tượng “loại bỏ trang lỗi” xuất hiện từ phần cứng, hệ thống giám sát trang sẽ truy cập vào ổ lưu trữ phụ, trả về một trang có lưu địa chỉ ảo nơi trang lỗi xuất hiện, sau đó sẽ cập nhật "trang bảng" để phản chiếu vị trí vật lý của bộ nhớ ảo và báo bộ biên dịch thực hiện lại yêu cầu.

Khi mà mọi vùng nhớ vật lý được sử dụng, “giám sát trang” bắt buộc phải giải phóng một trang trong bộ nhớ chính để lưu giữ một trang thay thế. Bộ giám sát sử dụng một trong những thuật toán thay thế trang như “ít sử dụng nhất” để quyết định trang bị loại bỏ.

Trang ghim

Hệ điều hành có các khu vực bộ nhớ được ghim (không bao giờ trao đổi để lưu trữ thứ cấp). Các thuật ngữ khác được dùng như trang khóa, trang cố định, hoặc trang kết nối. Ví dụ, cơ chế ngắt dựa trên một mảng của các con trỏ chỉ đến lệnh xử lý, chẳng hạn như I/O hoàn thành và lỗi trang. Nếu các trang có chứa các con trỏ hoặc các mã mà họ gọi là trang, "gián đoạn - xử lý" sẽ trở nên phức tạp hơn và tốn thời gian, đặc biệt là trong trường hợp bị gián đoạn do lỗi trang. Do đó, một số phần của cấu trúc "bảng trang" là không có trang.Một số trang có thể được gắn trong một thời gian ngắn, những trang khác có thể được gắn trong một thời gian dài, và những trang còn lại có thể được gắn vĩnh viễn. Ví dụ:Mã giám sát trang và trình điều khiển cho các thiết bị lưu trữ thứ cấp trong các trang phải được gắn vĩnh viễn, nếu không phân trang thậm chí sẽ không làm việc vì không có các mã cần thiết.

Các thành phần theo thời gian có thể được gắn để tránh sự chậm trễ của các biến trang.Bộ đệm dữ liệu được truy cập trực tiếp bởi các thiết bị ngoại vi mà sử dụng truy cập bộ nhớ trực tiếp hoặc kênh I/O phải nằm trong các trang ghim khi các lệnh vận hành I/O đang được tiến hành. Bởi vì các thiết bị ấy và những “xe” (Tiếng Anh: bus) đến nơi được gắn vào để tìm bộ đệm dữ liệu nằm tại các địa chỉ bộ nhớ vật lý; bất kể các “xe” có một đơn vị quản lý bộ nhớ cho I / O, chuyển đổi không thể dừng lại nếu một lỗi trang xảy ra và sau đó khởi động lại khi có lỗi trang đã được xử lý.

Trong các hệ thống điều hành của IBM dành cho System/370 và hệ thống kế thừa, thuật ngữ này là "cố định", và các trang như vậy có thể được cố định dài hạn, hoặc có thể là cố định ngắn hạn, hoặc có thể không cố định. Cấu trúc điều khiển hệ thống này thường cố định dài hạn (đo trong thời gian của đồng hồ treo tường, tức là, thời gian đo bằng giây, chứ không phải là thời gian đo bằng phần trăm một giây) trong khi bộ đệm I/O thường là cố định ngắn hạn (được đo chục mili giây). Thật vậy, hệ điều hành có một nơi đặc biệt cho "sửa chữa nhanh" những bộ đệm dữ liệu được cố định ngắn hạn (sửa chữa được thực hiện mà không đến hướng dẫn Giám sát hàm gọi tốn thời gian).

Multics sử dụng thuật ngữ "có dây". OpenVMS và Windows chỉ những trang tạm thời “không có trang” (như đối với bộ đệm I/O) là "bị khóa", và chỉ đơn giản là "nonpageable" cho những cái hoàn toàn không có trang.

Hoạt động ảo-thực

Trong OS / VS1 và các hệ điều hành tương tự, một số bộ phận của hệ thống bộ nhớ được quản lý theo chế độ "ảo-thực", còn gọi là "V = R". Trong chế độ này, mỗi địa chỉ ảo tương ứng với cùng địa chỉ thực. Chế độ này được sử dụng cho các cơ chế ngắt, cho giám sát trang và bảng trang trong hệ thống cũ, và cho các chương trình sử dụng hệ thống quản lý I/O không đúng tiêu chuẩn. Ví dụ, IBM z/OS có 3 chế độ (ảo-ảo, ảo-thực và ảo - cố định).

Thrashing

Khi trang và “cắp” trang (Tiếng Anh: page stealing) đều xảy ra, một vấn đề gọi là "Thrashing" có thể xảy ra, trong đó các máy tính dành một lượng lớn thời gian không thích hợp khi chuyển trang đến và đi từ một nơi sao lưu, do đó làm chậm công việc có ích. Một bộ nhiệm vụ là một bộ tối thiểu của các trang mà phải ở trong bộ nhớ để nó thực hiện những tiến trình hữu ích. Thrashing xảy ra khi không có đủ bộ nhớ để lưu trữ các bộ làm việc của tất cả các chương trình đang hoạt động. Thêm bộ nhớ thực là phản hồi đơn giản nhất, nhưng việc cải tiến thiết kế ứng dụng, lập chương trình, và sử dụng bộ nhớ cũng có thể giúp. Một giải pháp khác là để giảm số lượng các nhiệm vụ đang hoạt động trên hệ thống. Điều này làm giảm nhu cầu về bộ nhớ thực bằng cách trao đổi các thiết lập toàn bộ hoạt động của một hoặc nhiều quy trình.